﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace RobotCtrl
{
    public class DigitalOut
    {
        protected int data;
        public readonly int MAXVAL = 0xF; //Alle 4 LEDs blinken

        public virtual int Data { 
            get { return this.data; } 
            set { this.data = value; }
        }

        
        public virtual bool this[int idx]
        {
            get{
                //True if bit is set, false otherwise
                return ( (data & (0x01 << idx)) != 0); 
            }
        //Konditionalparam kommt vor Zuweisung!!!! (theoretisch auch ohne klammern möglich)
            set{
                //Value 1 --> dann setzen mittels Oder
                //Value 0 --> Inhalt von diesem Bit auf ganzes gesehen negieren 
                //            und dieses Bitmuster mit data UND Verknüpfen
                data = (value ? data | (0x01 << idx) : data & ~(0x01 << idx));
            }
        }

    }
}
